library (plotly)
Attaching package: ‘plotly’
The following object is masked from ‘package:ggplot2’:
last_plot
The following object is masked from ‘package:stats’:
filter
The following object is masked from ‘package:graphics’:
layout
# Install patchwork package
library("patchwork")
manning <- read_csv("manning.csv")
Warning: Missing column names filled in: 'X1' [1]
── Column specification ────────────────────────────────────────────────────────────────────────────────────────────
cols(
X1 = col_double(),
season = col_double(),
name = col_character(),
team_color = col_character(),
headshot_url = col_character(),
epa = col_double()
)
g <- ggplot(manning, aes(x = season, y = epa))
g1 <- g + geom_line(color = manning$team_color)+
xlim(1999, 2021)+
ylim(-75, 300)+
theme_classic()
pic <- manning$headshot_url[1]
library(magick)
pic2 <- image_read(pic)
image <- image_fill(pic2, 'none')
raster <- as.raster(image)
g2 <- g1 + annotation_raster(raster, 1998, 2002, 200, 300)
brady <- read_csv("brady.csv")
Warning: Missing column names filled in: 'X1' [1]
── Column specification ────────────────────────────────────────────────────────────────────────────────────────────
cols(
X1 = col_double(),
season = col_double(),
name = col_character(),
team_color = col_character(),
headshot_url = col_character(),
epa = col_double()
)
b <- ggplot(brady, aes(x = season, y = epa))
b1 <- b + geom_line(color = brady$team_color)+
xlim(1999, 2022)+
ylim(-75, 300)+
theme_classic()
pic <- brady$headshot_url[1]
pic2 <- image_read(pic)
image <- image_fill(pic2, 'none')
raster <- as.raster(image)
b2 <- b1 + annotation_raster(raster, 2000, 2004, 200, 300)
ben <- read_csv("ben.csv")
Warning: Missing column names filled in: 'X1' [1]
── Column specification ────────────────────────────────────────────────────────────────────────────────────────────
cols(
X1 = col_double(),
season = col_double(),
name = col_character(),
team_color = col_character(),
headshot_url = col_character(),
epa = col_double()
)
b <- ggplot(ben, aes(x = season, y = epa))
b1 <- b + geom_line(color = ben$team_color)+
xlim(1999, 2022)+
ylim(-75, 300)+
theme_classic()
pic <- ben$headshot_url[1]
pic2 <- image_read(pic)
image <- image_fill(pic2, 'none')
raster <- as.raster(image)
b3 <- b1 + annotation_raster(raster, 2000, 2004, 200, 300)
cam <- read_csv("cam.csv")
Warning: Missing column names filled in: 'X1' [1]
── Column specification ────────────────────────────────────────────────────────────────────────────────────────────
cols(
X1 = col_double(),
season = col_double(),
name = col_character(),
team_color = col_character(),
headshot_url = col_character(),
epa = col_double()
)
b <- ggplot(cam, aes(x = season, y = epa))
b1 <- b + geom_line(color = cam$team_color)+
xlim(1999, 2022)+
ylim(-75, 300)+
theme_classic()
pic <- cam$headshot_url[1]
pic2 <- image_read(pic)
image <- image_fill(pic2, 'none')
raster <- as.raster(image)
b5 <- b1 + annotation_raster(raster, 2000, 2004, 200, 300)
b5

subplot(nrows = 2,g2, b2, b5, b4)
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgpgYGB7cn0KbGlicmFyeShzaGlueSkKbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikKbGlicmFyeShtYXJrZG93bikKbGlicmFyeShrbml0cikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5IChwbG90bHkpCmxpYnJhcnkocG5nKQpgYGAKCmBgYHtyfQoKICAgIyBJbnN0YWxsIHBhdGNod29yayBwYWNrYWdlCmxpYnJhcnkoInBhdGNod29yayIpICAKCm1hbm5pbmcgPC0gcmVhZF9jc3YoIm1hbm5pbmcuY3N2IikKCmcgPC0gZ2dwbG90KG1hbm5pbmcsIGFlcyh4ID0gc2Vhc29uLCB5ID0gZXBhKSkKCmcxIDwtIGcgKyBnZW9tX2xpbmUoY29sb3IgPSBtYW5uaW5nJHRlYW1fY29sb3IpKwogIHhsaW0oMTk5OSwgMjAyMSkrCiAgeWxpbSgtNzUsIDMwMCkrCiAgdGhlbWVfY2xhc3NpYygpCgpwaWMgPC0gbWFubmluZyRoZWFkc2hvdF91cmxbMV0KCmxpYnJhcnkobWFnaWNrKQpwaWMyIDwtIGltYWdlX3JlYWQocGljKQoKaW1hZ2UgPC0gaW1hZ2VfZmlsbChwaWMyLCAnbm9uZScpCnJhc3RlciA8LSBhcy5yYXN0ZXIoaW1hZ2UpCgpnMiA8LSBnMSArIGFubm90YXRpb25fcmFzdGVyKHJhc3RlciwgMTk5OCwgMjAwMiwgMjAwLCAzMDApCmBgYAoKCmBgYHtyfQpicmFkeSA8LSByZWFkX2NzdigiYnJhZHkuY3N2IikKCmIgPC0gZ2dwbG90KGJyYWR5LCBhZXMoeCA9IHNlYXNvbiwgeSA9IGVwYSkpCgpiMSA8LSBiICsgZ2VvbV9saW5lKGNvbG9yID0gYnJhZHkkdGVhbV9jb2xvcikrCiAgeGxpbSgxOTk5LCAyMDIyKSsKICB5bGltKC03NSwgMzAwKSsKICB0aGVtZV9jbGFzc2ljKCkKCnBpYyA8LSBicmFkeSRoZWFkc2hvdF91cmxbMV0KCnBpYzIgPC0gaW1hZ2VfcmVhZChwaWMpCgppbWFnZSA8LSBpbWFnZV9maWxsKHBpYzIsICdub25lJykKcmFzdGVyIDwtIGFzLnJhc3RlcihpbWFnZSkKCgpiMiA8LSBiMSArIGFubm90YXRpb25fcmFzdGVyKHJhc3RlciwgMjAwMCwgMjAwNCwgMjAwLCAzMDApCmBgYAoKCgpgYGB7cn0KYmVuIDwtIHJlYWRfY3N2KCJiZW4uY3N2IikKCmIgPC0gZ2dwbG90KGJlbiwgYWVzKHggPSBzZWFzb24sIHkgPSBlcGEpKQoKYjEgPC0gYiArIGdlb21fbGluZShjb2xvciA9IGJlbiR0ZWFtX2NvbG9yKSsKICB4bGltKDE5OTksIDIwMjIpKwogIHlsaW0oLTc1LCAzMDApKwogIHRoZW1lX2NsYXNzaWMoKQoKcGljIDwtIGJlbiRoZWFkc2hvdF91cmxbMV0KCnBpYzIgPC0gaW1hZ2VfcmVhZChwaWMpCgppbWFnZSA8LSBpbWFnZV9maWxsKHBpYzIsICdub25lJykKcmFzdGVyIDwtIGFzLnJhc3RlcihpbWFnZSkKCgpiMyA8LSBiMSArIGFubm90YXRpb25fcmFzdGVyKHJhc3RlciwgMjAwMCwgMjAwNCwgMjAwLCAzMDApCmBgYAoKYGBge3J9CmFhcm9uIDwtIHJlYWRfY3N2KCJhYXJvbi5jc3YiKQoKYiA8LSBnZ3Bsb3QoYWFyb24sIGFlcyh4ID0gc2Vhc29uLCB5ID0gZXBhKSkKCmIxIDwtIGIgKyBnZW9tX2xpbmUoY29sb3IgPSBhYXJvbiR0ZWFtX2NvbG9yKSsKICB4bGltKDE5OTksIDIwMjIpKwogIHlsaW0oLTc1LCAzMDApKwogIHRoZW1lX2NsYXNzaWMoKQoKcGljIDwtIGFhcm9uJGhlYWRzaG90X3VybFsxXQpwaWMyIDwtIGltYWdlX3JlYWQocGljKQoKaW1hZ2UgPC0gaW1hZ2VfZmlsbChwaWMyLCAnbm9uZScpCnJhc3RlciA8LSBhcy5yYXN0ZXIoaW1hZ2UpCgoKYjQgPC0gYjEgKyBhbm5vdGF0aW9uX3Jhc3RlcihyYXN0ZXIsIDIwMDAsIDIwMDQsIDIwMCwgMzAwKQoKYjQKCnN1YnBsb3QobnJvd3MgPSAyLGcyLCBiMiwgYjMsIGI0KQpgYGAKCmBgYHtyfQpjYW0gPC0gcmVhZF9jc3YoImNhbS5jc3YiKQoKYiA8LSBnZ3Bsb3QoY2FtLCBhZXMoeCA9IHNlYXNvbiwgeSA9IGVwYSkpCgpiMSA8LSBiICsgZ2VvbV9saW5lKGNvbG9yID0gY2FtJHRlYW1fY29sb3IpKwogIHhsaW0oMTk5OSwgMjAyMikrCiAgeWxpbSgtNzUsIDMwMCkrCiAgdGhlbWVfY2xhc3NpYygpCgpwaWMgPC0gY2FtJGhlYWRzaG90X3VybFsxXQpwaWMyIDwtIGltYWdlX3JlYWQocGljKQoKaW1hZ2UgPC0gaW1hZ2VfZmlsbChwaWMyLCAnbm9uZScpCnJhc3RlciA8LSBhcy5yYXN0ZXIoaW1hZ2UpCgpiNSA8LSBiMSArIGFubm90YXRpb25fcmFzdGVyKHJhc3RlciwgMjAwMCwgMjAwNCwgMjAwLCAzMDApCgpiNQoKc3VicGxvdChucm93cyA9IDIsZzIsIGIyLCBiNSwgYjQpCmBgYA==